Go 的 testify 和 mockery 库
TODO: ....
看别人的项目发现有行注释 Goland 显示可以运行,遂查询用法,发现 testify 和 mockery 这两个库
这两个库的目的都是一致的,简化单元测试,所以拿来一起学习
testify 库
Goland 官方的支持 使用Testify工具包
mockery 库
mockery,Golang 的一种用于模拟实例的自动生成工具。GitHub 资源页 下载后设置 PATH 路径(或者直接丢到 GOROOT 路径里面去)
首先添加依赖
go get github.com/vektra/mockery/v2/.../
生成 Mock 文件
创建一个简单的接口
package test
type Stringer interface {
String() string
}
第一种方式:命令
到文件路径运行
mockery --name=Stringer
然后就能看到输出了
可以看到生成的文件
package mocks
import mock "github.com/stretchr/testify/mock"
// Stringer is an autogenerated mock type for the Stringer type
type Stringer struct {
mock.Mock
}
// String provides a mock function with given fields:
func (_m *Stringer) String() string {
ret := _m.Called()
var r0 string
if rf, ok := ret.Get(0).(func() string); ok {
r0 = rf()
} else {
r0 = ret.Get(0).(string)
}
return r0
}
第二种方式:直接在这个接口上面写注释
//go:generate mockery --name Stringer --filename stringer_mock.go
点击后也会生成 stringer_mock.go
文件
在执行 go generate
时,指令 //go:generate mockery -name=Client
被触发。它本质上是 mockery -name=Client
的快捷方式,优势是 go generate
可以批量执行多个目录下的多个指令